import md5 from "md5";
import {getTranslate} from "@/api/public";
import {saveAs} from "file-saver"; // 用于保存文件

// 翻译函数
export const translateText = async (q: string): Promise<string> => {
    let appid = "20210708000883091";
    let key = "ndEAP2Wu3xr5oxMail4D";
    let salt = (new Date).getTime();
    let str1 = appid + q + salt + key;
    let sign = md5(str1);

    try {
        const res: any = await getTranslate({
            q: q,
            from: 'en',
            to: 'zh',
            appid: appid,
            salt: salt,
            sign: sign
        });
        return res?.trans_result[0]?.dst || '翻译失败'; // 返回翻译后的文本
    } catch (error) {
        console.error('翻译失败:', error);
        return `翻译失败 ${q}`; // 如果翻译出错，返回原始文本
    }
};

// 递归翻译对象中的指定字段
export const translateObject = async (obj: any, fieldsToTranslate: string[], generateJson: boolean = false): Promise<any> => {
    let newObj: any = Array.isArray(obj) ? [] : {};

    for (let key in obj) {
        if (obj.hasOwnProperty(key)) {
            // 如果字段是对象或数组，递归处理
            if (typeof obj[key] === 'object' && obj[key] !== null) {
                newObj[key] = await translateObject(obj[key], fieldsToTranslate, false); // 递归翻译嵌套对象
            } else {
                // 检查是否是需要翻译的字段
                if (fieldsToTranslate.includes(key)) {
                    newObj[key] = await translateText(obj[key]); // 翻译文本
                } else {
                    newObj[key] = obj[key]; // 直接复制不需要翻译的字段
                }
            }
        }
    }

    // 如果需要生成 JSON 文件
    if (generateJson) {
        const blob = new Blob([JSON.stringify(newObj, null, 2)], {type: 'application/json'});
        saveAs(blob, 'translated_object.json'); // 保存文件为 JSON 格式
    }

    return newObj; // 返回翻译后的新对象
};
